package com.huatai.bi.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * mqtt链接信息表
 * @TableName mq_mqtt_client
 */
@TableName(value ="mq_mqtt_client")
@Data
public class MqMqttClientEntity implements Serializable {

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 链接名称
     */
    @ApiModelProperty("链接名称")
    private String mqttName;

    /**
     * 链接地址
     */
    @ApiModelProperty("链接地址")
    private String serverHost;

    /**
     * 链接端口
     */
    @ApiModelProperty("链接端口")
    private String serverPort;

    /**
     * 链接类型1账号密码2证书访问
     */
    @ApiModelProperty("链接类型1账号密码2证书访问")
    private Integer clientType;

	/**
	 * 是否是父子终端（1：是，0：否）
	 */
	@ApiModelProperty("是否是父子终端（1：是，0：否）")
    private Integer isParent;

	/**
	 * 父子终端设备标识层级（如events.default）
	 */
	@ApiModelProperty("父子终端设备标识层级（如events.default）")
	private String markInfo;

    /**
     * 链接用户名（证书访问可为空）
     */
    @ApiModelProperty("链接用户名（证书访问可为空）")
    private String username;

    /**
     * 链接密码（证书访问可为空）
     */
    @ApiModelProperty("链接密码（证书访问可为空）")
//    @TableField(select = false)
    private String password;

    /**
     * 链接标识id
     */
    @ApiModelProperty(value = "客户端链接id自动生成")
    private String clientId;

    /**
     * CA证书文件（密码访问可为空）
     */
    @ApiModelProperty("CA证书文件（密码访问可为空）")
    private String caFile;

    /**
     * cert文件（密码访问可为空）
     */
    @ApiModelProperty("cert文件（密码访问可为空）")
    private String ccFile;

    /**
     * key文件（密码访问可为空）
     */
    @ApiModelProperty("key文件（密码访问可为空）")
    private String ckFile;

    /**
     * mqtt订阅的主体，以“，”隔开
     */
    @ApiModelProperty("mqtt订阅的主体，以“，”隔开")
    private String clientTopic;

    /**
     * 客户端每次重连是否清除session
     */
    @ApiModelProperty("客户端每次重连是否清除session")
    private Boolean clientCleanSession;

    /**
     * 信息备注
     */
    @ApiModelProperty("链接状态0未链接1已连接2连接中3连接异常")
    private Integer status;

    /**
     * 数据集id
     */
    @ApiModelProperty("数据集目录id")
    private Long dtId;

	/**
	 * 数据集id
	 */
	@ApiModelProperty("数据集id")
	private Long dataSetId;

    /**
     * 信息备注
     */
    @ApiModelProperty("信息备注")
    private String remark;

    /**
     * 是否开启
     */
    @ApiModelProperty("是否开启")
    private Boolean enableFlag;

    /**
     * 链接前缀
     */
    @ApiModelProperty("链接前缀")
    private String mqttPrefix;

	/**
	 * 链接ip端口
	 */
	@ApiModelProperty("链接ip端口")
	private String ipPort;

	/**
	 * 上层解析字段信息（多个用“,”分隔）
	 */
	@ApiModelProperty("上层解析字段信息（多个用“,”分隔）")
	private String topColumns;

	/**
	 * 数据解析字段层级（如events,default）
	 */
	@ApiModelProperty("数据解析字段层级（如events,default）")
	private String detailColumnsInfo;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间",hidden = true)
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty(value = "更新时间",hidden = true)
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}
